package com.briup.day38;

import java.io.*;

public class IODemo5 {
	public static void main(String[] args) {
		// 读取demo4.txt文件中的所有字节数据
		String path = "src/com/briup/day38/demo4.txt";
		// 必须将fis定义在try的外边，才能够让finally块访问到
		// 而且必须先赋一个空值，否则finally中不能直接对未初始化的对象进行操作
		FileInputStream fis = null;
		try {
			fis = new FileInputStream(path);
			
			byte[] buf = new byte[3];
			int len = -1;
			
			int count = 0;
			while((len = fis.read(buf)) != -1) {
				System.out.print(new String(buf, 0, len));
				
				if (++count == 10) // 模拟可能出现的异常情况
					throw new IOException();
			}
		} catch (IOException e) {
			System.out.println("出现了异常：" + e.getMessage());
			// 假设在处理异常的过程中又出现了新的运行时异常
			/*if (1 == 1) {
				throw new RuntimeException();
			}*/
		} finally {
			// finally执行的优先级相当高，即使是抛出了异常或者方法返回
			// finally{}块仍然会执行，在这里特别适合做收尾工作：流的关闭。
			// 将关闭步骤定义在finally中能够最高程度保障流一定会被关闭
			try {
				if (fis != null) { // 为什么要判断是否为空？
					fis.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}
}
